获取协程函数调用栈。
function Coroutine::getBackTrace(int $cid=0, int $options=DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit=0) : array;
需要
4.1.0
或更高版本
$cid
协程的ID
,默认为当前协程$options
设置选项DEBUG_BACKTRACE_PROVIDE_OBJECT
: 是否填充object
的索引DEBUG_BACKTRACE_IGNORE_ARGS
: 是否忽略args
的索引,包括所有的function/method
的参数,能够节省内存开销$limit
限制返回堆栈帧的数量
- 指定的协程不存在,将返回
false
- 成功返回数组,格式与 debug_backtrace 函数返回值相同
function test1() {
test2();
}
function test2() {
while(true) {
co::sleep(10);
echo __FUNCTION__." \n";
}
}
$cid = go(function () {
test1();
});
go(function () use ($cid) {
while(true) {
echo "BackTrace[$cid]:\n-----------------------------------------------\n";
//返回数组,需要自行格式化输出
var_dump(co::getBackTrace($cid))."\n";
co::sleep(3);
}
});